A user interface (UI) of a computer program, to be considered favorably by end users, needs to be appealing to those users, straightforward to use and consistent in its operation. Designing such a user interface can be a complex and tedious task, as there typically needs to be a large number of UI-related components that have to work together.
The task is complicated by the various client platforms on which an application program can be run. For example, the same general type of application program may be run on a browser platform, on a gaming/entertainment console platform, on a smartphone platform, on a tablet platform and so on. Adapting the typically complex UI to each platform generally causes much difficulty for the UI designer. Indeed, even within a platform such as a browser having mostly standardized APIs, there are various browser vendors and browser versions, each with its own quirks and vendor-specific details that need to be considered to make the UI operate correctly and relatively efficiently for that particular browser.